﻿using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using ProceduralCity.Textures.Windows;

namespace ProceduralCity.Textures.Walls
{
    interface IWallTexture
    {
        /// <summary>
        /// Returns the entire texture generated.
        /// </summary>
        Texture2D Texture { get; }

        // TODO: Since textures only have 2-dimentions for chunk sizes, make all 3D uses of chunk sizes be 2 dimensions.
        /// <summary>
        /// 
        /// </summary>
        void Initialize(int chunkWidth, int chunkHeight, IWindowTexture windows);

        /// <summary>
        /// Generates a texture that can be regularly chopped into chunks.
        /// </summary>
        Texture2D Generate(int chunksWide, int chunksHigh);

        /// <summary>
        /// This function is useful for copying a chunk of a wall to another texture;
        /// </summary>
        Rectangle GetChunk(int row, int col);
    }
}
